package cn.xzhang.boot.service;

import cn.xzhang.boot.common.pojo.PageResult;
import cn.xzhang.boot.model.dto.wallpaperScore.WallpaperScoreAddReqDTO;
import cn.xzhang.boot.model.dto.wallpaperScore.WallpaperScorePageReqDTO;
import cn.xzhang.boot.model.dto.wallpaperScore.WallpaperScoreUpdateReqDTO;
import cn.xzhang.boot.model.entity.WallpaperScore;
import cn.xzhang.boot.model.vo.wallpaperScore.WallpaperScoreSimpleVo;
import cn.xzhang.boot.model.vo.wallpaperScore.WallpaperScoreVo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author <a href="https://github.com/XiaoZhangCode">XiaoZhangCode</a>
 * @description 针对表【wallpaperScore(壁纸评分表)】的数据库操作Service
 */
public interface WallpaperScoreService extends IService<WallpaperScore> {

    /**
     * 添加壁纸评分信息。
     *
     * @param wallpaperScoreReqDTO 壁纸评分添加请求数据传输对象，包含要添加的壁纸评分的所有必要信息。
     * @return 返回添加操作的自增ID，用于标识此次添加操作。
     */
    long addWallpaperScore(WallpaperScoreAddReqDTO wallpaperScoreReqDTO);

    /**
     * 更新壁纸评分信息。
     *
     * @param wallpaperScoreReqDTO 包含壁纸评分更新信息的请求DTO（数据传输对象）。该对象应包含需要更新的壁纸评分属性。
     * @return boolean 返回true如果壁纸评分信息更新成功，返回false如果更新失败或遇到错误。
     */
    boolean updateWallpaperScore(WallpaperScoreUpdateReqDTO wallpaperScoreReqDTO);

    /**
     * 删除壁纸评分
     *
     * @param id 壁纸评分的唯一标识符
     * @return boolean 返回操作是否成功。true表示删除成功，false表示删除失败。
     */
    boolean deleteWallpaperScore(Long id);

    /**
     * 根据WallpaperScore对象获取对应的WallpaperScoreVo对象。
     *
     * @param wallpaperScore 一个包含壁纸评分信息的WallpaperScore对象。
     * @return 返回一个包含壁纸评分信息的WallpaperScoreVo对象。
     */
    WallpaperScoreSimpleVo getSimpleWallpaperScoreVO(WallpaperScore wallpaperScore);

    /**
     * 获取壁纸评分页面信息
     *
     * @param wallpaperScorePageReqDTO 包含分页和筛选条件的壁纸评分请求数据传输对象
     * @return 返回壁纸评分页面的结果，包括壁纸评分列表和分页信息
     */
    PageResult<WallpaperScoreVo> getWallpaperScorePage(WallpaperScorePageReqDTO wallpaperScorePageReqDTO);

    /**
     * 根据WallpaperScore对象获取对应的WallpaperScoreVo对象。
     *
     * @param wallpaperScore 一个包含壁纸评分信息的WallpaperScore对象。
     * @return 返回一个包含壁纸评分信息的WallpaperScoreVo对象。
     */
    WallpaperScoreVo getWallpaperScoreVO(WallpaperScore wallpaperScore);
}
